      SUBROUTINE F06ETF(NZ,A,X,INDX,Y)
C     MARK 14 RELEASE. NAG COPYRIGHT 1989.
C
C     PURPOSE
C
C         DAXPYI ADDS A REAL SCALAR MULTIPLE OF
C             A REAL SPARSE VECTOR  X
C             STORED IN COMPRESSED FORM  (X,INDX)
C         TO
C             A REAL VECTOR  Y  IN FULL STORAGE FORM.
C
C         ONLY THE ELEMENTS OF  Y  WHOSE INDICES ARE LISTED IN  INDX
C         ARE REFERENCED OR MODIFIED.  THE VALUES IN  INDX  MUST BE
C         DISTINCT TO ALLOW CONSISTENT VECTOR OR PARALLEL EXECUTION.
C
C         ALTHOUGH DISTINCT INDICES WILL ALLOW VECTOR OR PARALLEL
C         EXECUTION, MOST COMPILERS FOR HIGH-PERFORMANCE MACHINES WILL
C         BE UNABLE TO GENERATE BEST POSSIBLE CODE WITHOUT SOME
C         MODIFICATION, SUCH AS COMPILER DIRECTIVES, TO THIS CODE.
C
C     ARGUMENTS
C
C     INPUT ...
C
C         NZ      INTEGER     NUMBER OF ELEMENTS IN THE COMPRESSED FORM.
C         A       REAL        SCALAR MULTIPLIER OF  X.
C         X       REAL        ARRAY CONTAINING THE VALUES OF THE
C                             COMPRESSED FORM.
C         INDX    INTEGER     ARRAY CONTAINING THE INDICES OF THE
C                             COMPRESSED FORM.  IT IS ASSUMED THAT
C                             THE ELEMENTS IN  INDX  ARE DISTINCT.
C
C     UPDATED ...
C
C         Y       REAL        ARRAY, ON INPUT, WHICH CONTAINS THE
C                             VECTOR  Y  IN FULL STORAGE FORM.  ON
C                             OUTPUT ONLY THE ELEMENTS CORRESPONDING TO
C                             THE INDICES IN  INDX  HAVE BEEN MODIFIED.
C
C     SPARSE BASIC LINEAR ALGEBRA SUBPROGRAM
C
C     FORTRAN VERSION WRITTEN OCTOBER 1984
C     ROGER G GRIMES, BOEING COMPUTER SERVICES
C
C     .. Entry Points ..
      ENTRY             DAXPYI(NZ,A,X,INDX,Y)
C     .. Scalar Arguments ..
      DOUBLE PRECISION  A
      INTEGER           NZ
C     .. Array Arguments ..
      DOUBLE PRECISION  X(*), Y(*)
      INTEGER           INDX(*)
C     .. Local Scalars ..
      INTEGER           I
C     .. Executable Statements ..
      IF (NZ.LE.0) RETURN
C
      IF (A.EQ.0.0D0) RETURN
C
      DO 20 I = 1, NZ
         Y(INDX(I)) = Y(INDX(I)) + A*X(I)
   20 CONTINUE
C
      RETURN
      END
